﻿// 4718. 弹球线路.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
/*
https://www.acwing.com/problem/content/4721/

给定一个 n×m
 的方格矩阵。

将一个弹球放置到其中的任意一个方格之中，并使其沿四个对角方向之一（左上、左下、右上、右下）进行无限移动。

当弹球移动至矩阵边缘的方格时，它可以发生反弹并继续移动。

更具体地说，当它到达矩阵边（但并非角）上的方格时，它可以将移动方向改变 90
 度并继续移动，当它到达矩阵角上的方格时，它可以将移动方向改变 180
 度并继续移动。

1.png

不难发现，弹球会沿着一个固定的线路进行无限循环移动。

我们认为两个线路不同，当且仅当两个线路包含的方格不完全相同（而不考虑弹球的具体移动方向）。

弹球在不同的初始位置沿不同的初始方向进行移动，其移动线路可能不同，也可能相同。

现在，请你计算弹球一共可能有多少种不同的移动线路。

输入格式
共一行，包含两个整数 n,m
。

输出格式
一个整数，表示弹球可能的移动线路数量。

数据范围
前 6
 个测试点满足 2≤n,m≤4
。
所有测试点满足 2≤n,m≤106
。

输入样例1：
3 4
输出样例1：
2
输入样例2：
3 3
输出样例2：
3

*/
#include <iostream>

int main()
{
    std::cout << "Hello World!\n";
}
 